import request from "../../utils/request"
// pages/video/video.js
Page({

  /**
   * 播放器实例
   */
  player: null,

  /**
   * 页面的初始数据
   */
  data: {
    navList: [],
    navId: '',
    videoList: [],
    currentVideo: '',
    vid: '',
    playRecordList: [],
    refresherFlag: false
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage({
    from
  }) {
    console.log(from)
    // 系统的转发必须要写这个事件
    // 自己的按钮转发 自定义的时候需要写这个事件
    if (from === 'button') {
      return {
        title: '自己按钮转发',
        imageUrl: '../../static/images/mylove.jpg',
        path: '/pages/video/video'
      }
    }
  },
  // 触发下拉刷新的时候,需要重新请求当前的视频数据 13072702791
  handlerRefresh() {
    this.setData({
      refresherFlag: true,
    })
    this.getVideoList()
  },
  // 上拉触底后,再次加载新的数据
  handlerToLower() {
    let videoList = this.data.videoList
    videoList.push(...videoList)
    if (videoList.length < 30) {
      this.setData({
        videoList,
      })
    }
  },
  // video 播放结束，清除历史记录
  handlerEnd(event) {
    let vid = event.currentTarget.id
    let playRecordList = this.data.playRecordList
    let newPlayRecordList = playRecordList.filter(item => item.vid !== vid)
    this.setData({
      playRecordList: newPlayRecordList
    })
  },
  // 检测播放的视频时间进度
  handlerTimeUpdate(event) {
    const playRecordList = this.data.playRecordList;
    const vid = event.currentTarget.id
    const obj = playRecordList.find(item => item.vid == vid)
    if (obj) {
      // 代表存在
      obj.currentTime = event.detail.currentTime
    } else {
      playRecordList.push({
        vid,
        currentTime: event.detail.currentTime
      })
    }
    this.setData({
      playRecordList
    })
  },
  // 添加历史 播放记录
  addHistoryRecord() {
    let obj = this.data.playRecordList.find(item => item.vid === this.data.vid)
    if (obj) {
      // 如果查找到之前的播放记录，那么这次我需要跳转到位置
      this.player.seek(obj.currentTime)
    }
  },
  videoClick(event) {
    const vid = event.currentTarget.id
    // 之前不存在 video 实例
    if (!this.player) {
      // 如何保证只有一个视频在播放  (利用单例模式)
      // 首先保证只有一个执行上下文对象(创建的视频实例),存到我们的this上
      this.player = wx.createVideoContext(vid)
      this.player.play()
      this.setData({
        vid,
      })
    } else {
      // 判断点的是不是同一个视频
      if (vid !== this.data.vid) {
        this.player.pause();
        this.player = wx.createVideoContext(vid)
        // 添加历史 播放记录
        this.addHistoryRecord()
        this.player.play()
        this.setData({
          vid,
        })
      } else {
        // 啥也不干
      }
    }
  },
  // 点击 nav 事件
  onChangeNav(event) {
    this.setData({
      navId: event.target.dataset.id
    })
    // console.log(event)
    // nav 改变重新请求 video
    this.getVideoList();
  },
  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    await this.getNavList()
    this.getVideoList()
  },
  // 获取 nav 列表数据
  async getNavList() {
    const result = await request('/video/group/list')
    if (result.code === 200) {
      // console.log(result.data)
      this.setData({
        navList: result.data.slice(0, 15),
        navId: result.data[0].id
      })
    }
  },
  // 获取 video 列表
  async getVideoList() {
    const rs = await request('/video/group', {
      id: this.data.navId
    })
    if (rs.code === 200) {
      const videoList = rs.datas.map(item => item.data)
      // 模拟延迟
      setTimeout(() => {
        this.setData({
          videoList,
          refresherFlag: false
        })
      }, 2000)
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})